package xin.marcher.module.construction.domain.request;

import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 建品/编辑商品请求入参
 */
@Data
public class ProductRequest implements Serializable {

    /**
     * 商品基本信息
     */
    private ItemBaseRequest itemBaseRequest;
    /**
     * 存储信息
     */
    private ItemStorageRequest itemStorageRequest;
    /**
     * 品控信息
     */
    private ShelfLifeRequest shelfLifeRequest;
    /**
     * 图文信息
     */
    private List<ItemVideoImgRequest> itemVideoImgRequestList;
    /**
     * 销售信息
     */
    private ItemSaleRequest itemSaleRequest;
    /**
     * 推广信息
     */
    private ItemPopularizeRequest itemPopularizeRequest;
    /**
     * 标签信息
     */
    private List<Long> labelIds;

    /**
     * 操作人
     */
    @NotNull(message = "操作人[operateUser]不能为空")
    private Integer operatorUser;

    /**
     * 商品基本信息
     */
    @Data
    public static class ItemBaseRequest implements Serializable {
        /**
         * 商品ID
         */
        private String itemId;
        /**
         * 商品名称
         */
        private String itemName;
        /**
         * 渠道（1-自营生鲜、2-美团、3-饿了么、4-淘鲜达、5-招商银行）
         */
        private Integer channel;
        /**
         * 卖家类型（1-自营、2-POP）
         */
        private Integer sellerType;
        /**
         * 商品状态
         */
        private Integer itemStatus;
        /**
         * 商品类型
         */
        private Integer itemType;
        /**
         * 品牌ID
         */
        private Integer brandId;
        /**
         * 产地ID
         */
        private Integer producingAreaId;
        /**
         * 成本价（单位：分）
         */
        private Integer basePrice;
        /**
         * 末级品类ID
         */
        private Integer lastCategoryId;
        /**
         * 一级品类ID
         */
        private Integer oneCategoryId;
        /**
         * 二级品类ID
         */
        private Integer twoCategoryId;
        /**
         * 三级品类ID
         */
        private Integer threeCategoryId;
    }

    /**
     * 存储信息
     */
    @Data
    public static class ItemStorageRequest implements Serializable {
        /**
         * 存储条件
         */
        private Integer storeConditionType;
        /**
         * ITEM维度规格值（多个规格集合）
         * key=颜色，value=蓝色
         * key=颜色，value=红色
         * key=内存，value=128g
         * key=内存，value=256g
         */
        private List<ProductSpcesValue> productSpcesValueList;
    }

    /**
     * 规格信息
     */
    @Data
    public static class ProductSpcesValue implements Serializable {
        /**
         * 规格关键字
         */
        private String key;
        /**
         * 规格值
         */
        private String value;
        /**
         * 排序
         */
        private Integer sort;
    }

    /**
     * 品控信息
     */
    @Data
    public static class ShelfLifeRequest implements Serializable {
        /**
         * 保质期（单位：小时）
         */
        private Integer shelfLife;
        /**
         * Map<key=保质期类型，value=保质期时间（单位：小时）>
         * acceptLife 允收期
         * shelfLife 货架期
         */
        private Map<String, Integer> shelfLifeMap;
    }

    /**
     * 图文信息
     */
    @Data
    public static class ItemVideoImgRequest implements Serializable {
        /**
         * 内容类型（1-主图，2-轮播图、3-详情图、4-视频）
         */
        private Integer contentType;
        /**
         * 链接地址
         */
        private String contentUrl;
        /**
         * 排序（正整数，数字越小越靠前）
         */
        private Integer contentSort;
    }

    /**
     * 销售信息
     */
    @Data
    public static class ItemSaleRequest implements Serializable {
        /**
         * sku信息
         */
        private List<SkuInfoRequest> skuInfoRequestList;
    }

    /**
     * sku信息
     */
    @Data
    public static class SkuInfoRequest implements Serializable {
        /**
         * 商品itemId
         */
        private String itemId;
        /**
         * 商品skuId
         */
        private String skuId;
        /**
         * 商品名称
         */
        private String skuName;
        /**
         * 商城价
         */
        private Integer basePrice;
        /**
         * 会员价
         */
        private Integer vipPrice;
        /**
         * 商品分级（ABC标签，运营归类处理）
         */
        private Integer skuGrade;
        /**
         * 69码
         */
        private String barCode;
        /**
         * SKU维度规格值（单个）
         * key=颜色，value=蓝色
         * key=内存，value=128g
         */
        private List<ProductSpcesValue> productSpcesValueList;
        /**
         * sku匹配的spu信息
         */
        private Long cspuId;
    }

    /**
     * 推广信息
     */
    @Data
    public static class ItemPopularizeRequest implements Serializable {
        /**
         * 推荐语
         */
        private String recommend;
        /**
         * 亮点
         */
        private List<HighlightsRequest> highlightsRequestList;
        /**
         * 卖点
         */
        private List<SellingPointRequest> sellingPointRequestList;
        /**
         * 质检报告
         */
        private List<QualityControlRequest> qualityControlRequestList;
    }

    /**
     * 亮点
     */
    @Data
    public static class HighlightsRequest implements Serializable {
        /**
         * 亮点文案
         */
        private String highlights;
        /**
         * 排序（正整数，数字越小越靠前）
         */
        private Integer sort;
    }

    /**
     * 卖点
     */
    @Data
    public static class SellingPointRequest implements Serializable {
        /**
         * 卖点文案
         */
        private String sellingPoint;
        /**
         * 排序（正整数，数字越小越靠前）
         */
        private Integer sort;
    }

    /**
     * 质检报告
     */
    @Data
    public static class QualityControlRequest implements Serializable {
        /**
         * 商品skuId
         */
        private String skuId;
        /**
         * 质检报告名称
         */
        private String qcName;
        /**
         * 材料图片链接
         */
        private String qcImgUrl;
        /**
         * 排序（正整数，数字越小越靠前）
         */
        private Integer qcSort;
    }
}